我有一个类库,其中包含一些基类和派生自它们的其他类。在这个类库中,我利用多态性来做我想做的事。现在在一个消费应用程序中,我想根据子类的运行时类型更改某些代码的行为。所以假设如下:publicclassBase{}publicclassChild1:Base{}publicclassChild2:Base{}现在在消费应用程序中我想做如下事情(注意以下所有类都在消费应用程序中,不能在类库中引用):publicinterfaceIMyInterface1{}publicinterfaceIMyInterface2{}publicstaticclassExtensions{publicsta
我用C#.NET写了下面的代码publicinterfaceIWork{voidfunc();}publicabstractclassWorkClass{publicvoidfunc(){Console.WriteLine("CallingAbstractClassFunction");}}publicclassMyClass:WorkClass,IWork{}编译时,我没有收到任何错误。编译器没有强制我实现方法“func();”在派生自接口(interface)“IWork”的“MyClass”中。之后,我可以优雅地创建类“MyClass”的实例并调用函数“func()”。为什么编译
我有这样的结构:publicinterfaceA{publicvoidmethod();}publicclassB:A{}publicclassC:A{}Listlist;List包含类型B和C的对象,它们也有一些我想保留的字段,我现在可以序列化它,反序列化回来并获得正确的对象实例吗?最好是XML编辑:有什么简单的方法可以序列化这个包含接口(interface)的列表,然后反序列化回B和C实例吗? 最佳答案 假设您正在使用内置的.netXML序列化,您应该查看以下属性:System.Xml.Serialization.XmlIncl
我有一个带有一些预定义控件(groupbox、button、datagridview)的UserControl,这些控件被标记为protected,组件变量也被标记为protected。然后我想从这个基本UserControl继承到另一个UserControl,但是DataGridView始终锁定在设计器中。我怀疑它可能与实现ISupportInitilize的DataGridView有关。publicclassBaseGridDetail:UserControl定义了DataGridView控件(等)。publicclassInheritedDetail:BaseGridDetail
我们可以继承单例类吗? 最佳答案 这取决于实现。单例通常具有私有(private)构造函数并且可能标记为sealed,如果是这样则不能。如果它至少受到保护,你可以。如果你只是从单例类继承,结果将不是单例,所以你应该遵循这个模式,让它也是单例。 关于c#-我们可以继承单例类吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3564758/
我有一个标记为抽象的基类。是否可以使该基类中的方法仅对继承该基类的其他类可见?假设我有Class1,它是我的基类,被标记为抽象类。Class2继承了Class1并且可以调用它的所有公共(public)方法。我希望Class3创建Class2的实例,但不能调用Class1的某些方法。我尝试将这些方法本身标记为抽象方法,但当Class2尝试使用它们时出现错误。错误是:“...无法声明正文,因为它被标记为抽象” 最佳答案 为什么不声明方法protected?publicabstractclassClass1{protectedabstra
简单的说,微软定义了一个ReadOnlyCollectionBase,但没有将其用作ReadOnlyCollection的基类当听起来很明显应该是这样的时候。我是不是漏掉了什么?我的意思是,是否有充分的理由不将此类作为基类? 最佳答案 可能是因为它不是通用的并且实现了ICollection而ReadOnlyCollection是通用的并实现了ICollection.注意ICollection不执行ICollection.在那topic:ICollectionseemslikeICollection,butit’sactuallyav
我有一个关于单元测试的问题。假设我有几个从父类继承行为的类。我不想测试所有子类的这种行为。相反,我会测试父类。但是,我还应该提供一个测试来证明该行为在子类中可用。你认为像Assert.IsTrue(newChildClass()isParentClass)这样的东西有意义吗? 最佳答案 让您的测试继承自基类测试,[非常]大致像这样。publicclassMyBaseClass{publicvirtualvoidDoStuff(){}publicvirtualvoidDoOtherStuff(){}}publicclassMySubC
classProgram{staticvoidMain(string[]args){ListmyList=newList{newA(),newB(),newC()};foreach(varainmyList){Render(a);}Console.ReadKey();}privatestaticvoidRender(Ao){Console.Write("A");}privatestaticvoidRender(Bb){Console.Write("B");}privatestaticvoidRender(Cc){Console.Write("C");}}classA{}classB:A
只是想知道私有(private)类级变量是否继承?在C#中 最佳答案 是的,但它们是不可访问的,所以看它你可以诚实地说它们不是继承的。但是,是的,他们确实是 关于c#-私有(private)类级变量是否继承?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3373625/